home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr23 / rbcom345.zip / RBCOMM.DOC < prev    next >
Text File  |  1995-01-22  |  89KB  |  2,159 lines

  1. RBcomm v3.45    Copyright (c) 1989-1995 Ralf Brown  All Rights Reserved
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6. --------------------------------------------------------------------------
  7.  
  8.  
  9. RBcomm is a lean and mean comm program which will run in 47K without
  10. file transfer capability or 65K with file transfer capability. Since it
  11. is so lean, you will not get a lot of the fancy features of other comm
  12. programs, though there are plenty of features to let you get your work
  13. done (I've been using it exclusively for over five years, and have
  14. added features as I've found that I could be more productive with them
  15. than without).
  16.  
  17. Features:
  18.     small (runs in as little as 47K [65K with DSZ, 66K with Puma/MPt])
  19.     DESQview-aware
  20.     pop-up menus
  21.     'type' a file to the remote system, optionally expanding blank lines
  22.     seamless file transfer using DSZ, PCZ, or Puma/MPt
  23.     Zmodem autodownload (others easily added)
  24.     shell to DOS, using well under 1K while shelled
  25.     keyboard reassignment, powerful keystroke macros, "DOORWAY" mode
  26.     250-number dialing directory
  27.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  28.        [UnixWindows and AVATAR level 1 partially implemented]
  29.     ANSI music
  30.     132-column support
  31.     supports the 16550A UART's FIFOs and speeds to 115,200 bps
  32.        (a 4.77MHz 8088 can handle 19200)
  33.     scrollback buffer
  34.  
  35. Registration:
  36.     Continued use of DSZ requires registration with Omen Technology, Inc.
  37.     See the DSZ documentation for details.
  38.  
  39.     Continued use of Puma/MPt requires registration with Matthew Thomas.
  40.     See the Puma or MPt documentation for details.
  41.  
  42.     If you like RBcomm, send me a picture postcard of some sight in your
  43.     area.  If you don't like RBcomm, feel free to send me a postcard
  44.     anyway, telling me what you don't like.     I just might change the
  45.     thing you don't like in the next release.
  46.  
  47. Support:
  48.     None (after all, I'm not getting any money for this).  I will try to
  49.     fix bugs as time allows.  When reporting a suspected bug, please
  50.     include as much detail as possible (such as a verbose log if it
  51.     involves the terminal emulation).
  52.  
  53. DISCLAIMER:  This software is distributed AS IS and without any express
  54.     or implied warranties.    The author disclaims all responsibility
  55.     for any damages which might be incurred as the result of using
  56.     or misusing* the program.  Although widely used by many people,
  57.     the software is not guaranteed to function on any system other
  58.     than the author's own. 
  59.       *RBcomm has the ability to overwrite or delete files, which can
  60.        result in data loss if used indiscriminately.
  61.  
  62.  
  63.     Ralf Brown            [valid until November 1, 1995]
  64.     813 Copeland Way, Suite 26
  65.     Pittsburgh, PA 15232
  66.  
  67.     Internet: ralf+@cs.cmu.edu
  68.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  69.     BIT:  ralf%cs.cmu.edu@cmuccvma
  70.     FIDO: Ralf Brown 1:129/26.1
  71.  
  72. Files in the RBcomm distribution archive:
  73.     RBCOMM.DOC    this file
  74.     COMM.COM    the RBcomm main program
  75.     RBCONFIG.COM    the configuration program
  76.     MACRO.COM    the keyboard macro compiler
  77.     DVPWIDTH.COM    program to set maximum width in DESQview .DVP files
  78.     R?-PIF.DVP    DESQview program information files
  79.     *.MAC        keyboard macro definition sources
  80.     *.HLP        help screens for corresponding macro files
  81.     TERMCAP        Unix "termcap" entry for RBcomm
  82.  
  83. Availability:
  84.     The newest version is always available on:
  85.        SoundingBoard 1:129/26 File Requests
  86.        (412)621-4604
  87.        24 hours, USR HST 14.4
  88.  
  89.        FTP.CS.CMU.EDU [128.2.222.173]
  90.        directory /afs/cs.cmu.edu/user/ralf/pub
  91.        You must change directly to this directory with a single
  92.          command due to the way our anonymous FTP works.
  93.  
  94.     New versions will also be available here within a few days of release:
  95.        Rosedale Dataline
  96.        (301)866-4554
  97.        24 hours, USR HST 9600
  98.        TP Board
  99.  
  100.        Fidonet nodes participating in DVNet
  101.  
  102.        SimTel mirrors such as OAK.OAKLAND.EDU or WUARCHIVE.WUSTL.EDU
  103.        directory /SimTel/msdos/modem
  104.  
  105. System Requirements:
  106.        IBM PC or close compatible
  107.        at least 47K free memory (65K for file transfers)
  108.        one or more serial ports
  109.        DOS 2.0 or higher
  110.        48-128K disk space or EMS or XMS memory for swapping, depending
  111.          on configuration
  112.  
  113. -------------------------------------------------------------------------------
  114. Installation
  115. ------------
  116.  
  117. Before you use RBcomm for the first time, you need to tell it where to find
  118. its support files and how to talk to the modem.     To do so, copy the RBcomm
  119. files to the directory in which you wish to install them, change to that
  120. directory, and type
  121.  
  122.     RBCONFIG CONFIG COMM.COM
  123.  
  124. (if COMM.COM is not in the current directory, use the full path, i.e.
  125. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  126.  
  127. Please do not use your original copy.  If you forget to run RBCONFIG, you
  128. will be told to do so when you attempt to run COMM.COM.
  129.  
  130. You will now be asked (via a menu) to fill in several groups of information.
  131. Note that you may use either forward slashes ('/') or backward slashes
  132. ('\') to separate directories in a pathname.
  133.  
  134. Press 'D' to set the directories and extensions to use.
  135.    RBcomm dir:    where the keyboard macro files and dialing directory are stored
  136.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  137.         and neither EMS nor XMS is available.  A RAMdisk is ideal for
  138.         storing the swap file, which will be about 64K (the exact size
  139.         depends on your setup).
  140.    Use XMS if available:  if set to N, RBcomm will always swap to disk in the
  141.         directory specified by the previous item, or EMS if enabled.
  142.         If set to Y (default), RBcomm will swap to XMS memory if there
  143.         is enough available.
  144.    Use EMS if available:  if set to N, RBcomm will always swap to either XMS
  145.         (if available) or to disk.  If set to Y (default), RBcomm will
  146.         swap to EMS memory if XMS is unavailable and there is enough
  147.         free EMS.
  148.    Macro file extension:  default extension to apply to keyboard macro files
  149.    Default macro file:      keyboard macro file to load on startup and hangup
  150.         if this file does not exist, RBcomm will use a built-in set
  151.         of default key bindings
  152.  
  153. Press 'S' to select the serial port to use.  You may setup
  154. configurations for "COM1" through "COM4", as well as the default port to
  155. use when not otherwise indicated in the dialing directory. The values
  156. given for "COM3" and "COM4" need not bear any relationship to the
  157. numbering of the actual serial ports in your system (you could, for
  158. example, set them up to be the same as "COM1" except for the length of
  159. the break signal).  RBCOMM does check that "COM1" and "COM2" exist
  160. according to the BIOS data area, however, to avoid running in a DESQview
  161. window which has incorrect settings for supporting serial
  162. communications.     Break length specifies the length of the signal that is
  163. sent when you give the break command (default Alt-B) in multiples of the
  164. standard clock tick of 55ms.  You may specify a separate setup string
  165. for each port.    The setup string needs to ensure that the modem echos
  166. back any commands it is sent, and asserts carrier detect only while
  167. actually connected with another modem (for Hayes-compatible "AT" command
  168. sets, "E1&C1").
  169.  
  170. Press 'M' to define the modem setup.  In this section, you need to enter
  171. several strings to be sent to the modem, and the strings the modem will
  172. return to RBcomm.  Note that you may enter control characters such as ^M
  173. (carriage return) by pressing control-Q followed immediately by the
  174. desired control character.  You can enter a DEL (ASCII 127) by pressing
  175. Alt-D.    Since most modems nowadays use the Hayes 'AT' command set, the
  176. only entry you are likely to change is "dial prefix", which will be
  177. "ATDT" for touch-tone dialing or "ATDP" for pulse dialing.  Note that
  178. the responses should be set to the shortest substring that uniquely
  179. identifies the response.
  180.  
  181. Press 'P' to setup dialing parameters.    You may specify the name of the
  182. dialing directory, how long to try before declaring a time-out, and how long
  183. to wait before trying again.
  184.  
  185. Press 'F' to set the commands and parameters to execute for the various
  186. file transfer protocols.  You may embed replaceable parameters
  187. introduced by a percent sign into the command strings--see the EXEC
  188. macro command for details.  An additional replacement of %F is available
  189. which expands to the name(s) of the file(s) to transfer.  Note that the
  190. default "portx" will cause DSZ to report the port as COM9, but it will
  191. still use the correct serial port. You need to use "portx" if you will
  192. be using more than one serial port.
  193.  
  194. Press 'C' to set the colors you want RBcomm to use.  You may select the
  195. default and "underlined" colors, as well as the colors to use on menus
  196. and in the scrollback viewer.
  197.  
  198. Press 'V' to determine whether 132-column mode should be enabled, whether
  199. to start in 132- or 80-column mode, and the register values needed to set
  200. 132-column mode.  When running under DESQview, RBcomm can tell DESQview to
  201. set the virtual screen size to 132 columns if you specify zero for AX.
  202. DESQview will then display as much as it can at one time; this is useful
  203. if you need a 132-column display but do not have a video board which
  204. supports 132 columns.
  205.  
  206. Press 'T' to adjust a number of toggles.  Many of these may also be changed
  207. from within RBcomm.
  208.    "Local echo" allows you to turn on half-duplex operation by default.
  209.    "Verbose" sets whether to include terminal control sequences in a log file.
  210.    "Strip parity bit" specifies whether the high bit should be stripped from
  211.       all incoming characters, even when parity is set to None.
  212.    "Visual bell" specifies whether to flash the screen instead of sounding a
  213.       beep when a ^G is received (internally-generated beeps always use sound).
  214.    "Should backspace send delete" specifies whether the values sent by
  215.       backspace and control-backspace should be exchanged.
  216.    "Check for enhanced keyboard" determines whether RBcomm will use the
  217.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  218.       systems incorrectly indicate support for those calls.  Set this to
  219.       'N' if RBcomm appears to hang your system.
  220.    "May RBcomm to change NumLock" determines whether RBcomm will change the
  221.       state of the NumLock key when it receives the "keypad numeric mode" or
  222.       "keypad application mode" commands.  Disabling the NumLock changes is
  223.       useful for laptop users without a separate number pad.
  224.    "Save screen" specifies whether the current screen is saved prior to
  225.       executing external programs (except for file transfers) and restored
  226.       afterwards.  If the screen is saved, you will be asked to press a
  227.       key before the screen is restored.
  228.  
  229. Finally, press 'O' for miscellaneous options.
  230.    "Heap size" determines how much memory RBcomm allocates for macro files,
  231.       macro execution, and some of RBcomm's own processing.  This must be
  232.       set to at least 800 bytes more than the size of the largest macro
  233.       (.RBM) file.  A larger setting will not harm, but will needlessly
  234.       use more memory.    Should you get an "out of memory" or "stack full"
  235.       error message, you will need to increase this value.  When set to
  236.       zero, RBcomm will grab as much heap space as it can (about 24K).
  237.    "Receive buffer size" determines how much memory RBcomm allocates
  238.       for storing characters received from the serial port which it has
  239.       not yet been able to process.  The default of 2048 is sufficient
  240.       for most uses; a larger buffer may provide somewhat better
  241.       performance at very high speeds on a slow machine, while a smaller
  242.       buffer saves some memory.
  243.    "Number of screens" specifies how many virtual terminals to allocate
  244.       space for.  This will become useful for the UnixWindows protocol;
  245.       most users will want to set this value to 1.  Keeping multiple
  246.       screens allows you to remember one or more screens of data and
  247.       return to them at a later time.
  248.    "Time between sends in idle mode" determines how often Idle mode (see
  249.       Alt-I) sends some characters to keep the connection alive when you
  250.       are not actively using RBcomm.
  251.    "String idle mode sends" specifies what characters to send to keep the
  252.       connection alive.
  253.    "Answerback message" allows you to specify the string which RBcomm will
  254.       send when it receives a ^E.  The ANSWERBACK macro command can override
  255.       this setting.
  256.    "Default pace character" determines which character RBcomm will wait for
  257.       after sending each line of text from the file being typed to the
  258.       remote system.  Setting this value to ^@ means that RBcomm will not
  259.       pause after each line.  This setting may be changed while RBcomm is
  260.       running by using the PACECHAR macro command.
  261.    "Use EMS for scrollback" determines whether RBcomm will allocate 32K
  262.       of expanded memory (if available) for the pager and scrollback
  263.       buffers.    If set to Y and at least 32K of EMS is available, RBcomm
  264.       will give you a 6K pager buffer and 26K scrollback buffer regardless
  265.       of the next two settings.
  266.    "Size of non-EMS pager buffer" determines how much memory RBcomm will
  267.       allocate for the file pager's buffer when EMS is not available or
  268.       has been disabled.  Larger values can improve the pager's performance
  269.       on files with long lines, but values greater than 6-8K will not have
  270.       much of an effect unless you have an extremely large screen.  Values
  271.       smaller than the number of characters on the screen will cause
  272.       significant slowdowns when viewing files or displaying a directory,
  273.       due to thrashing as RBcomm constantly re-reads data.
  274.    "Size of non-EMS scrollback buffer" determines how much memory RBcomm
  275.       will set aside for storing text received from the serial port.  As
  276.       new text comes in, the oldest will be discarded.    Whatever text is
  277.       in the scrollback buffer may be viewed with Alt-O.
  278.  
  279. On choosing "Quit" from the menu, you will be asked whether to save the
  280. new configuration to disk.  If you specify that you want to save the changes,
  281. the executable on disk will be updated.
  282.  
  283. ---------------------
  284. DESQview Installation
  285. ---------------------
  286.  
  287. After performing the file copy and configuration described in the
  288. previous section, you need to install RBcomm on the DESQview Open
  289. Window menu.  In DESQview, tap the Alt key to bring up the DESQview
  290. menu, then press "O" for the Open Window menu, and "AP" to add a
  291. program.  Select "Other", then fill in the directory in which you've
  292. placed the RBcomm files and press Enter.  You will be given the choice
  293. of RBcomm, RBcomm plus DSZ, and RBcomm 132col; select one or more and
  294. press Enter.  Now use "CP" from the Open Window menu to change the
  295. paths and/or the keys for starting RBcomm.
  296.  
  297. The only difference between "RBcomm" and "RBcomm + DSZ" is that the
  298. former allocates the minimum amount of memory for RBcomm to run (46K),
  299. which is not enough to invoke DSZ, but does save 19K when you do not
  300. need file transfer capability.  Should RBcomm complain about
  301. insufficient memory (the window exits almost instantly), decrease the
  302. heap size on the "Other options" menu in RBCONFIG.  If your environment
  303. is particularly large, you may need to use Change a Program to increase
  304. the window sizes by a K or two.  With certain screen sizes, you may
  305. also need to give RBcomm 1K of system memory (on the advanced options
  306. screen).
  307.  
  308. To get a 132-column display under DESQview, configure RBcomm to use
  309. 132-column mode and then make a .DVP file using "Change a Program"
  310. which has all fields except for "maximum width" set to the desired
  311. values.  Change a Program only allows 127 columns in the window, so
  312. choose an arbitrary size smaller than that.  After pressing Enter to
  313. save the .DVP, run the included DVPWIDTH program to change the maximum
  314. width to 132 columns, i.e.
  315.     DVPWIDTH 132 RZ-PIF.DVP 
  316. You must give the full name of the .DVP file, including the extension.
  317. Note that Change a Program will force you to change the window's width
  318. if you have set the width greater than 127 and run Change a Program
  319. again.
  320.  
  321. If you do not wish to use the DVPWIDTH program, or your version of
  322. DESQview experiences difficulties with a 132-column setting in the .DVP
  323. file, RBcomm can still use 132-column windows through an alternate
  324. method.  For this alternative, you must give it enough "system memory"
  325. to store the entire maximum-size screen.  Whatever memory is used to
  326. store the initial screen size set under "Window Position" is then
  327. wasted, so that size should be set fairly small (such as 15 columns by
  328. the desired number of rows).  If you are not interested in the reason,
  329. skip the rest of this paragraph.  DV normally reuses the same section
  330. of memory when resizing the virtual screen.  However, resizing it
  331. beyond the maximum defined by the .DVP causes an entire new buffer to
  332. be allocated.  Thus, minimizing the "maximum screen size" also
  333. minimizes the DESQview overhead by reducing the size of the screen
  334. buffer which gets discarded.
  335.  
  336. RBcomm is sufficiently DESQview-aware to ask DV for the size of the
  337. screen. If you want a 120x60 screen, just set the maximum window size
  338. to 120 columns and 60 rows.  DESQview will display as much as it can on
  339. your screen, but RBcomm will use the full size.  If you have enabled
  340. 132-column mode with RBCONFIG, RBcomm will also switch to 132 columns
  341. by the given number of rows when it receives the sequence "<Esc>[?3h".
  342.  
  343. RBcomm refuses to load itself twice on the same serial port when
  344. running under DESQview.  However, when shelled to DOS, you can load
  345. another copy in a different window, but make sure to exit the second
  346. copy before returning from the DOS shell, or the first copy will abort.
  347. The method RBcomm uses is compatible with ONLY1.SHP using the names
  348. "COM1" through "COM8" (depending on the serial port), so you can also
  349. keep RBcomm from conflicting with other programs that use a serial
  350. port, such as BBS mailers.
  351.  
  352. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't
  353. need a full slice.  This improves the performance of programs in other
  354. windows, and makes supplemental programs such as TAME unnecessary (as
  355. phrased by TAME's author, RBcomm is "DV-polite").
  356.  
  357. -----------------------------------------------------------------------------
  358. Dialing Directory
  359. -----------------
  360.  
  361. The dialing directory is a specially formatted data file (rather than a
  362. plain text file) containing up to 250 entries.  This data file may be
  363. created and maintained with RBCONFIG (see Editing the Dialing Directory
  364. below).
  365.  
  366. For the convenience of those using RBcomm version 3.31 or earlier, or
  367. those wishing to distribute dialing entries for other RBcomm users,
  368. RBCONFIG has the capability to compile a plain text file into an RBcomm
  369. dialing directory.  In the plain text file, each dialing entry consists
  370. of two lines, looking like this, with no blank lines between entries:
  371.  
  372.     Doctor's WOC Inn
  373.     14126214604|4800N81|B|OPUS|password|\\N2
  374.  
  375. The first line contains the description which will be used on the dialing
  376. directory screen and when dialing.  The second line contains six fields
  377. separated by vertical bars.  These fields are
  378.  
  379.      1. number to dial (direct connection if empty)
  380.      2. modem parameters, containing in order
  381.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  382.              57600, 115k)
  383.       parity    (N for none, E for even, O for odd, S for space,
  384.              M for mark)
  385.       data bits (5, 6, 7 or 8)
  386.       stop bits (1 or 2)
  387.       handshake to use when receive buffer is full
  388.             (H for hardware RTS/CTS, X for software XON/XOFF)
  389.             (optional, default is hardware)
  390.       timed call flag
  391.             (if handshake present and the character after the handshake
  392.              is T, a short "bip" will sound about 50 seconds into each
  393.              minute after establishing a connection.  Every five
  394.              minutes, the "bip" sounds twice)
  395.       serial port number
  396.             (if handshake is present, following either the handshake
  397.              character or the "T" timed call flag with a comma and
  398.              the number of the serial port will tell RBcomm to switch
  399.              to that port before dialing)
  400.      3. terminal emulation
  401.       A for ANSI with VT102 extensions
  402.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  403.               and character set switching is disabled)
  404.       V for VT52 with H19 extensions
  405.      4. keyboard macro file to load
  406.      5. password for this system (used by PASSWORD macro command).  Display of
  407.       passwords in the dialing directory may be turned on or off with
  408.       RBCONFIG.
  409.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  410.       (may include vertical bars).    In the example above, the \\N2 tells
  411.       my modem to use MNP error correction.
  412.  
  413. If the keyboard macro file field is non-empty, the specified file will
  414. be loaded immediately upon successfully connecting with the remote
  415. system.  Since each entry in the dialing directory can specify an
  416. independent set of keyboard macros, you can have a different set of
  417. keyboard bindings for each system. If the macro file specifies a
  418. binding for the ONLOAD "key", that macro will be executed immediately.
  419. Further, if the macro file specifies a binding for the AUTO "key", that
  420. macro will be executed immediately after the ONLOAD macro (if any).
  421.  
  422. The setup string may contain the following special sequences:
  423.     ~    pause for half a second
  424.     \n   send a line feed
  425.     \r   send a carriage return
  426.     \f   send a form feed
  427.     \t   send a horizontal tab
  428.     \a   send a ^G
  429.     \b   send a backspace
  430.     \!   send a break
  431.     \~   send a tilde
  432.     \\   send a backslash
  433.  
  434. Example modem parameters:
  435.     1200E71X     default COM port, 1200 bps, even parity, seven data
  436.              bits, one stop bit, use Xon/Xoff handshake when
  437.              receive buffer fills up
  438.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  439.              stop bit, use hardware handshake, and sound off
  440.              every minute
  441.  
  442. Compiling the Dialing Directory
  443. -------------------------------
  444.  
  445. Once you have created a plain-text dialing file, you must compile it
  446. into the binary form used by COMM.COM.  The directory compiler is
  447. invoked with
  448.     RBCONFIG DIAL [-C<port>] <filename>
  449. where <filename> is the name of the dialing directory to compile and
  450. <port> is a number from 1 to 4 specifying which serial port is the
  451. default port when none is explicitly given in the file.  Any extension
  452. given with the filename is ignored; the text file always has the
  453. extension .DIR and the compiled binary file has the extension .RBD.
  454.  
  455. If you want to add entries from a dialing file to the dialing directory
  456. rather than creating a dialing directory from scratch, you can append
  457. new entries to an existing directory with
  458.     RBCONFIG DIAL [-A<port>] <dialdir> <filename>
  459.  
  460. Editing the Dialing Directory
  461. -----------------------------
  462.  
  463. To interactively edit a dialing directory, use
  464.     RBCONFIG DIAL [-E] <dialdir>
  465.  
  466. You may wish to read the section on the format of a plain-text dialing
  467. file for information on the various options, and the special characters
  468. you may use in the initialization string.
  469.  
  470.  
  471. -----------------------------------------------------------------------------
  472. Environment Variables
  473. ---------------------
  474.  
  475. RBcomm uses the following variables in its environment:
  476.  
  477. COMSPEC      specifies which program to load for Shell-to-DOS (Alt-D) and
  478.       Execute-Program (Alt-G).
  479.  
  480. RBCOMM      specifies default commandline options (which may be overridden by
  481.       the commandline).  See below for the valid options.  Note that only
  482.       the first 160 bytes will be used due to internal space limitations.
  483.  
  484. SWAPDIR      overrides the default swap directory, where RBcomm stores itself
  485.       when swapping to disk.
  486.  
  487. -----------------------------------------------------------------------------
  488. Commandline Options
  489. -------------------
  490.  
  491. RBcomm may be invoked with one or more options, described below.  These
  492. options are processed from left to right; if an option is present
  493. multiple times, the rightmost instance will be the one in effect.  The
  494. options in the RBCOMM environment variable (if present) are processed
  495. before the commandline, and thus are overridden by the commandline.
  496. Options are not case-sensitive.
  497.  
  498.     -B    use BIOS calls to display characters received from the
  499.         serial port (aka 'port check writes').  RBcomm's own
  500.         menus and messages will still use direct screen writes.
  501.         This option is primarily for the convenience of people
  502.         using screen readers.
  503.  
  504.     -Cn    select COMn, where 'n' may be 1 to 4.  This option
  505.         overrides the default set with RBCONFIG.
  506.  
  507.     -Ddir    set the RBcomm directory to 'dir'.  This option overrides
  508.         the RBCONFIG default.
  509.  
  510.     -Mfile    set the default macro file to use whenever not connected
  511.         to a remote system.  This option overrides the RBCONFIG
  512.         default.  Only the first 8 characters are used.
  513.  
  514.     -Nfile    set the RBcomm dialing directory to 'file'.  This option
  515.         overrides the RBCONFIG default; it replaces the RBCDIAL
  516.         environment variable used by prior releases.  Only the
  517.         first 12 characters are used; if no extension is given,
  518.         it defaults to .RBD.
  519.  
  520.     -Pparm    force default parameters for the current serial port.
  521.         Instead    of reading the port's parameters, RBcomm will
  522.         set them to the value specified here.  'parm' is in the
  523.         same format as used in the dialing directory, except
  524.         that the port number is not allowed.  You may intersperse
  525.         -C and -P options to set forced parameters for more than
  526.         one port.
  527.  
  528.     numlst    a list of numbers to dial as if typed at the dialing
  529.         directory (see Alt-Q below) prompt.  Each number must
  530.         be separated from the next by a comma.  No blanks are
  531.         allowed, as they signal the end of an argument on the
  532.         command line.
  533.  
  534. -----------------------------------------------------------------------------
  535. Memory Requirements
  536. -------------------
  537.  
  538. RBcomm's memory usage is approximately
  539.  
  540.      38.1K + heap size + receive buffer + screens + pager buffer
  541.        + scrollback buffer
  542.  
  543. where
  544.      screens = number_of_screens * (max_size + 352)
  545.      max_size = greater of (2*rows*columns) for 80 and 132-column modes
  546.      pager buffer and scrollback buffer are both 0 if allocated in EMS
  547.  
  548. If there is insufficient memory, the scrollback buffer is shrunk; if there
  549. is still not enough memory, the pager buffer is shrunk as well; as a
  550. last resort, the number of screens is reduced.
  551.  
  552. -----------------------------------------------------------------------------
  553. Keyboard Commands
  554. -----------------
  555.  
  556. The commands described here may be bound to other keys, but the default
  557. keystroke named here may always be used when preceded by Alt-= (hold down
  558. the Alt key and press the equal sign at the upper right of the typewriter
  559. section of the keyboard).
  560.  
  561. Alt-A    attack dial
  562.  
  563.     Repeatedly dials the number you select from the dialing directory
  564.     until a connection is established.  You may also manually enter a
  565.     number to attack-dial.
  566.  
  567. Alt-B    send break
  568.  
  569. Alt-C    call a number
  570.  
  571.     Dial the number you select from the dialing directory (once only).
  572.     You may also manually enter a number to dial.  If you are currently
  573.     connected to another system, you will be prompted whether to hang
  574.     up.  Press Esc to abort the dial and return to the current session.
  575.     Press "Y" to disconnect and then dial a new number, or "N" to maintain
  576.     the current connection and load new macros and parameters without
  577.     dialing.
  578.  
  579.     Note that the modem parameters always have an "H" appended when neither
  580.     "H" nor "X" is present in the dialing directory, since the handshake
  581.     defaults to hardware.
  582.  
  583.     See also Alt-Q.
  584.  
  585. Alt-D    DOS shell
  586.  
  587.     Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  588.     RBcomm will swap itself out of memory, leaving only 448 bytes plus
  589.     its copy of the environment in memory (464 bytes when swapping to
  590.     EMS).  When swapping to disk, a 46K-96K swap file will be created
  591.     in the directory you specified with RBCONFIG, and will be deleted
  592.     when you return to the comm session.  File transfers also create
  593.     the temporary swap file.
  594.  
  595. Alt-E    toggle local echo
  596.  
  597.     By default, RBcomm assumes that the remote system will echo any
  598.     characters you need to see.  After pressing Alt-E once, RBcomm will
  599.     display any characters you type without requiring the remote system
  600.     to echo them.  After pressing Alt-E a second time, RBcomm will once
  601.     again assume that the remote system will echo characters.
  602.  
  603.     Note: you may also toggle local echo by pressing 'L' on the Alt-P
  604.     parameters menu.
  605.  
  606. Alt-F    list files
  607.  
  608.     Display a three-up listing of the files matching a given filespec.
  609.     This command uses the pager, whose commands are    listed in a separate
  610.     section below.    Note that while the pager can back up past the
  611.     beginning of its buffer, doing so can be slow for large directories.
  612.     Please be patient if the screen is not updated instantly while backing
  613.     up.
  614.  
  615. Alt-G    Go execute a program
  616.  
  617.     You will be prompted to enter a command.  Everything up to the first
  618.     blank is the program to execute, and the rest of the line is the
  619.     command tail to pass to the program.  If you do not specify an explicit
  620.     path, RBcomm will search your PATH for you; similarly, if you do not
  621.     give an explicit extension, RBcomm will look for both .COM and .EXE
  622.     files.
  623.  
  624.     (to execute a batch file or a COMMAND.COM internal command, you should
  625.     use
  626.          "%VCOMSPEC% /c cmd"
  627.     as the implicit COMMAND.COM invocation from earlier releases has been
  628.     removed)
  629.  
  630. Alt-H    hang up
  631.  
  632.     Terminate the connection.  First drops DTR, and if Carrier Detect is
  633.     still active, sends the modem's hangup string.    The default macro set
  634.     is reloaded from disk (if present) or from the built-in defaults.
  635.     If the CLEANUP "key" has a macro binding, it is executed before
  636.     hanging up; if it includes the LOWER_DTR command, DTR will remain
  637.     dropped.
  638.  
  639. Alt-I    idle
  640.  
  641.     This command allows you to keep a connection alive if you need to step
  642.     away from your computer for a while.  Sends a space followed by a
  643.     backspace every two minutes (configurable with RBCONFIG) until you
  644.     press a key to cancel the command.
  645.  
  646. Alt-J    jump to directory
  647.  
  648.     Pops up a window displaying the current directory.  You may switch to
  649.     a different directory by entering it in place of the displayed
  650.     directory.  Relative paths without a leading slash or backslash will
  651.     change to a subdirectory of the current directory.  If you specify a
  652.     drive letter, that drive will become the current drive as well.
  653.  
  654. Alt-K    unused
  655.  
  656. Alt-L    toggle logging to file
  657.  
  658.     When pressed the first time, you will be asked for the name of a file
  659.     to which all characters received from the remote system will be
  660.     appended (percent signs introduce variable expansions--see the EXEC
  661.     and OPEN_LOG commands below).  When pressed the second time, RBcomm
  662.     will no longer append received characters to that file.     If verbose
  663.     (see Alt-Y) is active, all characters will be appended exactly as
  664.     received, otherwise any command sequences embedded in the received
  665.     data are stripped out.
  666.  
  667. Alt-M    learn macro string
  668.  
  669.     When you press Alt-M, you will be asked to enter a text string of up
  670.     to 79 characters, using the same editing keys used elsewhere.  This
  671.     text string may be replayed with Alt-N.
  672.  
  673. Alt-N    play back macro string
  674.  
  675.     Plays back the last string recorded with Alt-M, sending it to the
  676.     remote system.
  677.  
  678. Alt-O    scrOllback
  679.  
  680.     This command pops up the scrollback pager, allowing you to review
  681.     text which has already scrolled off the screen.     The keystrokes
  682.     which the pager understands are listed in a separate section below.
  683.     In addition, 'M' marks the top of the currently displayed screenfull 
  684.     as the beginning of the region to write when 'W' is pressed.  After
  685.     pressing 'W', you will be prompted for a filename.  The section of
  686.     the scrollback buffer between the marked top (default: beginning of
  687.     buffer) and the bottom of the currently displayed screen is appended
  688.     to the specified file.
  689.  
  690. Alt-P    set parameters
  691.  
  692.     This command pops up a menu which allows you to set the following
  693.     parameters:  COM port, speed, parity, parity stripping, handshake,
  694.     backspace translation, visual bell, and terminal emulation.  You may
  695.     also reset the terminal emulation to its initial state, in case the
  696.     remote system leaves you stranded in a strange condition.  Press Esc,
  697.     Enter, or 'R' to exit this menu.
  698.  
  699.     Note that Alt-P will discard any characters which have been received
  700.     but not yet processed, because it always reinitializes the serial
  701.     port when it pops down.
  702.  
  703. Alt-Q    dial queue of numbers
  704.  
  705.     Repeatedly dials each number you specify until a connection is
  706.     established with one of the numbers.  The numbers are dialed in
  707.     round-robin fashion until a connection is established.    A beep will
  708.     sound to notify you of the connection, and the name of the remote
  709.     system and the modem's connect response will be displayed.
  710.  
  711.     If there were multiple numbers in the previous dialing attempt,
  712.     Alt-Q will immediately continue dialing the numbers which to which
  713.     RBcomm has not yet successfully connected.
  714.  
  715.     You specify the entries to dial by giving the numbers as they appear
  716.     in the dialing directory, separated by commas or blanks.  A number
  717.     may be specified more than once, and will be dialed more than once
  718.     during a round of dialing attempts.  As a shortcut, you may separate
  719.     two numbers by a dash to dial all numbers in the range, inclusive.
  720.  
  721. Alt-R    receive file
  722.  
  723.     Pops up a menu allowing you to select the protocol with which you wish
  724.     to receive a file from a remote system.     Press ESCape if you do not
  725.     wish to receive a file.     Note that Zmodem features automatic download,
  726.     so you do not need to press Alt-R unless you wish to give DSZ
  727.     additional parameters.    You may also add additional autodownloading
  728.     protocols--see the WHEN macro command in the next section.
  729.  
  730.     Not listed on the menu:     ^G, ^Y, and ^Z pop up a parameter prompt,
  731.     then proceed with the download specified by the corresponding
  732.     non-control letter.
  733.  
  734. Alt-S    send file
  735.  
  736.     Pops up a menu allowing you to select the protocol with which you wish
  737.     to send a file to a remote system.  Press ESCape if you do not wish to
  738.     send a file.  After selecting a protocol, you will be asked to enter
  739.     the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  740.     wildcards and multiple filespecs).
  741.  
  742.     If you press the control character corresponding to the desired
  743.     protocol, the file(s) will be deleted after a successful transfer.
  744.     For batch transfers, only the files corresponding to the first
  745.     filespec are deleted.
  746.  
  747. Alt-T    type ASCII file to other system
  748.  
  749.     sends an ASCII file to the remote system, pausing after each line
  750.     for the return to be echoed.  The send may be aborted at any time
  751.     by pressing Escape.  The EXPAND_BLANK macro command may be used
  752.     to turn on blank-line expansion (send a single space instead of
  753.     blank lines).  This feature is off by default.
  754.  
  755. Alt-U    load/save user interface as defined in keyboard macro file
  756.  
  757.     Note that keyboard macro files are always stored in the RBcomm
  758.     directory as defined by RBCONFIG.
  759.  
  760.     WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  761.     WordStar (tm) and Emacs cursor movement commands on the cursor pad
  762.     (i.e. Home goes to the start of the line, etc.)     EMACS.RBM also binds
  763.     all Alt-letter keys to be Esc-letter, making the Alt key into a true
  764.     Emacs meta-key.     You will need to use the Alt-= override to use the
  765.     RBcomm commands while EMACS.RBM is loaded.
  766.  
  767. Alt-V    View file
  768.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  769.  
  770.     Page through a text file.  This uses a simple file lister which
  771.     only understands a few keystrokes; they are listed in a separate
  772.     section below.
  773.  
  774. Alt-W    select Which screen is visible
  775.  
  776.     Displays a menu of the available screens.  Press the indicated
  777.     number to make that screen the visible screen.    If UnixWindows
  778.     is not enabled, the selected screen will also be made the
  779.     active screen (characters received from the serial port are
  780.     displayed on the active screen).  Under UnixWindows, the
  781.     visible and active screens may be different, as the active
  782.     screen is set by commands from the remote system; thus, only
  783.     the visible screen is set by this command.
  784.  
  785. Alt-X    exit
  786.  
  787.     Terminate RBcomm.  If you are still connected to the remote system
  788.     (Carrier Detect asserted), you will be asked whether or not to hang
  789.     up.
  790.  
  791. Alt-Y    toggle verbose
  792.     (previously Alt-V)
  793.  
  794.     Toggles the verbose mode used with Alt-L.  When not logging, the
  795.     control characters which are not used for terminal commands will be
  796.     displayed as ^X when received from the remote system.  When logging to
  797.     a file, terminal command sequences will only be stored in the log file
  798.     if verbose mode is ON.
  799.  
  800. Alt-Z    send file with Zmodem
  801.  
  802.     This command will send the specified file(s) using the Zmodem
  803.     protocol.
  804.  
  805. Alt-1,2,3,4,5,6,7,8,9,0     dial first ten numbers in dialing directory
  806.  
  807. Alt-F1 through Alt-F10     dial 11th through 20th number in dialing directory
  808.  
  809. F1    pop up help screen
  810.     
  811.     Displays the contents of the help file for the current macro file
  812.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  813.     Press an Alt or function key to execute the default binding for the
  814.     key.  Escape exits immediately, and any other key pages through the
  815.     help file (if more than 20 lines long).
  816.  
  817. Alt--    cancel any pending WHEN, DELAYED, EVERY, or WINDOW commands
  818.  
  819. Alt-=    use default binding of next keystroke
  820.  
  821.     If the keyboard has been redefined, pressing Alt-= will allow you to
  822.     access the built-in default definitions (as listed in this section).
  823.     Press Alt-= and then immediately press the key whose default
  824.     definition you want to use.  As a result, Alt-= is the only keystroke
  825.     which may not be redefined.
  826.  
  827. -----------------------------------------------------------------------------
  828. Line Editor
  829. -----------
  830.  
  831. Whenever you are prompted for a line of input, you may use the following
  832. keys to edit the line:
  833.  
  834.     Esc    abort
  835.     Return    finish input
  836.     Home    move to start of line
  837.     ^A    move to start of line
  838.     End    move to end of line
  839.     Right    move a character right
  840.     ^D    move a character right
  841.     Left    move a character left
  842.     ^S    move a character left
  843.     ^Right    move word right (to next blank)
  844.     ^Left    move word left (to previous blank)
  845.     Del    delete the character under the cursor and shift remainder of
  846.         line left
  847.     Backsp    delete the character to the left of the cursor, and shift the
  848.         remainder of the line left
  849.     Alt-G    delete the word to the right of the cursor
  850.     Alt-H    delete the word to the left of the cursor
  851.     ^End    delete from the cursor to the end of the line
  852.     ^T    transpose the two characters to the left of the cursor
  853.     Alt-D    insert an ASCII DEL (127) character
  854.     Alt-P    insert the contents of the cut buffer
  855.     ^Q    treat the next keystroke as a literal character to insert
  856.  
  857. -----------------------------------------------------------------------------
  858. Pager
  859. -----
  860.  
  861. The pager is used to display directories, files, help screens, and the
  862. scrollback buffer.  It is fairly simple, supporting the following
  863. keystrokes:
  864.  
  865.     Up    move up one line
  866.     Down    move down one line
  867.     PgUp    move up one screenfull
  868.     PgDn    move down one screenfull
  869.     Space    move down one screenfull, exiting if already at end of
  870.         file/directory/buffer.
  871.     Right    (files/scrollback only) shift the left margin right by eight
  872.         spaces, allowing you to view lines extending past the right
  873.         edge of the screen.  When the left margin is other than
  874.         zero, the indent is shown at the right edge of the status
  875.         line.
  876.     Left    (files/scrollback only) shift the left margin left by eight
  877.         spaces if it is not already zero.
  878.     Home    restart the pager.  For files and directories, you will
  879.         be put back at the beginning of the file; for the scroll-
  880.         back buffer, you will be placed at the end of the buffer.
  881.     Esc    exit from the pager.
  882.  
  883. The scrollback pager adds the following keys to the above standard keys:
  884.     M    mark the top of the region to write to a file
  885.     W    write the marked region to a file
  886.  
  887. The dialing directory adds the following keys:
  888.     0-9    start entering the number(s) to dial
  889.     M    specify a telephone number to dial manually
  890.     R    recall the last list of numbers to dial
  891.  
  892. -----------------------------------------------------------------------------
  893. Error Messages
  894. --------------
  895.  
  896. file not found
  897.     RBcomm was unable to open the requested file.  This may be due to
  898.     wildcards or a misspelling in the filename, an invalid path,
  899.     a lack of file handles (see FILES= in your DOS manual), or a file
  900.     sharing conflict.
  901.  
  902. invalid macro file
  903.     the macro file you wanted to load is either corrupted or from a
  904.     different version of RBcomm which uses an incompatible format for
  905.     macro files.  Try recompiling the macro file with the same version
  906.     of the compiler as the version of RBcomm you are using.
  907.  
  908. MODEM NOT RESPONDING
  909.     RBcomm did not get an acknowledgement from the modem within four
  910.     seconds of the last command.  If you only get this message on attack
  911.     or list dialing, you need to increase the delay before redialing
  912.     with RBCONFIG (under "dialing parameters")--some modems take longer
  913.     to reset after a hangup command than others.
  914.  
  915. --out of memory--
  916.     There was not enough memory to pop up the requested menu or prompt.
  917.     Increase the heap size with RBCONFIG and try again.
  918.  
  919. STACK FULL
  920.     Your macro was so deeply nested that it ran out of space.  This can
  921.     be caused by an infinite recursion in your macro.  Increase the heap
  922.     size with RBCONFIG (under "Other options") and try again.
  923.  
  924. -----------------------------------------------------------------------------
  925. Warnings
  926. --------
  927.  
  928. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  929. itself back in and will have to abort.    Your connection will not be broken,
  930. however.
  931.  
  932. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm
  933. is able to detect a missing or truncated swap file on returning, but not
  934. other changes)
  935.  
  936. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  937. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a
  938. file transfer.    You will definitely trash the file allocation tables and
  939. directory of the second disk.  This is a problem with DOS itself (at least
  940. through 3.10, later versions may have corrected it) when faced with a
  941. diskette change while a file is open on the diskette which gets removed.
  942. The swap file is such an open file.
  943.  
  944. -----------------------------------------------------------------------------
  945. Known Bugs and Limitations
  946. --------------------------
  947.  
  948. If you are using a serial port which the BIOS does not recognize, RBcomm
  949. will most likely read garbage parameters from the port at startup, requiring
  950. you to set the parameters by hand with Alt-P or the -P commandline option.
  951.  
  952. The pager has trouble with extremely long lines (>500 columns or so).
  953. When encountering such a line, you may not be able to move up or down by
  954. single lines.  PgUp and PgDn will still work, however.
  955.  
  956. RBcomm requires that the EMS page frame contain at least three pages
  957. in order to use EMS for the scrollback and pager buffers, and at least
  958. one page in order to swap to EMS.  This is important when running under
  959. memory managers such as QEMM-386 which allow page frames smaller than
  960. the standard four pages.
  961.  
  962. -----------------------------------------------------------------------------
  963. Macro Compiler
  964. --------------
  965.  
  966. Syntax:     MACRO srcfile [srcfile ...]
  967. compiles each of the specified source files in turn to a macro file
  968. with the same name and the extension .RBM.  If no extension is
  969. specified for a source file, the default of .MAC is used.
  970.  
  971. Important Note:
  972.     RBcomm v3.4 and later macro files are INCOMPATIBLE with
  973.     earlier versions.  You must recompile all your macro files
  974.     if RBcomm complains about invalid macro files.
  975.  
  976. -------------------
  977. Macro File Commands
  978. -------------------
  979.  
  980. Each command has the following form:
  981.  
  982.     keyname     commandword   [args]
  983.  
  984. where keyname specifies to which key the command is to be bound.  Keynames
  985. (which are not case-sensitive) are:
  986.     F1 through F12 for the function keys
  987.        +F1 through +F12 for the shifted function keys
  988.        ^F1 through ^F12 for the control function keys
  989.        @F1 through @F12 for the alt-function keys
  990.        @A through @Z for the alt-letter keys
  991.        @1 through @0 for the alt-digits
  992.        Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
  993.        @Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
  994.        Alt-Gray/
  995.        Left, Right, Up, Down for the cursor keys on the numeric pad
  996.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  997.        KP5 for the '5' key on the number pad (enhanced keyboard)
  998.        ^Home, etc. for the control versions of the numberpad keys
  999.        CP_Home     Home key on gray cursor pad
  1000.        CP_Up     Up arrow on gray cursor pad
  1001.        CP_Down     Down arrow on gray cursor pad
  1002.        CP_Enter     Enter key on cursor pad
  1003.         etc.
  1004.        @Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
  1005.        Alt- versions of the cursor pad keys
  1006.        ^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
  1007.        ^Break     for control-break
  1008.        @- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
  1009.  
  1010. There are also some pseudo-keys to which you may assign a macro:
  1011.        "OnLoad" is executed any time the macro file is loaded into memory
  1012.        "AutoDL" is executed whenever the autodownload mechanism is
  1013.         initialized.  See the AUTO_XFER command for details.
  1014.        "Auto" is executed automatically when a connection is established
  1015.        "Reconnect" is executed automatically when reconnecting without
  1016.         hanging up and redialing
  1017.        "CleanUp" is executed when hanging up if carrier detect is active
  1018.        "OnAbort" is executed whenever a macro other than OnAbort aborts and
  1019.         displays the **ABORTED** message, just prior to displaying
  1020.         the message
  1021.        "Alarm" is executed whenever a connection is established with a remote
  1022.         system or when a file transfer (including TYPEing a file)
  1023.         completes.  If not bound, a simple beep is generated.
  1024.  
  1025. And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
  1026.        "Null" does nothing and returns immediately
  1027.  
  1028. Finally, there are two sets of pseudo-keys which can be used to
  1029. override the default settings for file transfers.
  1030.     "#upload_x" will override the command string for the upload
  1031.         protocol with letter 'x' on the upload menu.
  1032.         Format:  #upload_z "upload command string"
  1033.     "#download_x" will override the command string for the download
  1034.         protocol with letter 'x' on the download menu.
  1035.         Format:  #download_z yes|no "download command string"
  1036.         The first parameter indicates whether or not RBcomm
  1037.         should prompt the user for a filename or parameters
  1038.         (which may be inserted in the download command using
  1039.         the %F substitution--see EXEC).
  1040.  
  1041. You may assign macros to control keys by specifying "^x" as the key name,
  1042. where "x" is the control key you want to use.  Similarly, you may assign a
  1043. macro to a regular key by preceding the character representing the key by a
  1044. backslash (i.e. \A for capital 'A', \a for lowercase 'a'). Note that macros
  1045. are never in effect when you are prompted for information by RBcomm; they
  1046. only affect what (if anything) gets sent to the remote system.
  1047.  
  1048. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  1049. to which you wish to assign the macro (values of 224 through 255 are reserved,
  1050. 167 through 223 are currently unused by any key combinations supported by
  1051. the IBM ROM BIOS).
  1052.  
  1053. Note that the cursor pad keys will execute the binding for the
  1054. corresponding number pad key if not specifically bound (but not vice
  1055. versa).     CP_Enter defaults to the binding for @Enter.
  1056.  
  1057. The commandword is not case-sensitive, but you must include the underscore
  1058. if present and use the entire commandword (abbreviations are not
  1059. supported).
  1060.  
  1061. With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN
  1062. commands, all commands which take a string argument pop up a prompt if the
  1063. string is empty (i.e. "").  Strings may include the following special
  1064. sequences:
  1065.     ^x   specified control character
  1066.     ^?   ASCII DEL (127)
  1067.     \a   ^G (bell)
  1068.     \b   backspace
  1069.     \e   escape
  1070.     \f   form feed
  1071.     \n   line feed
  1072.     \r   carriage return
  1073.     \t   horizontal tab
  1074.     \v   vertical tab
  1075.     \\   backslash
  1076.     \^   carat
  1077.     \0   ASCII NUL (for TEXT command only)
  1078. For character arguments, you may specify either
  1079.     'c'
  1080. where the character c is interpreted as for a string, or you may specify its
  1081. ASCII value.
  1082.  
  1083. Everything from a semicolon (unless it is in a string) to the end of the line
  1084. is considered a comment, as are blank lines.
  1085.  
  1086. If a line starts with #include rather than a key name, the specified file
  1087. will be compiled into the macro file as if it were part of the current text
  1088. file.  Note that the string is processed just like any other strings, so
  1089. that you must double any backslashes (or use forward slashes, instead).
  1090. Format:
  1091.     #INCLUDE  "d:/path/filename"
  1092. an extension of .MAC is assumed if no extension is given, and the drive
  1093. letter and path are optional (default is current drive and directory).
  1094. #INCLUDEs may be nested up to twelve deep.
  1095.  
  1096. If a line starts with #ignore rather than a key name, any subsequent
  1097. occurrences of the keyname following the #ignore will be ignored, just as
  1098. if you had already defined a binding for the key.  This is useful when
  1099. #include'ing a file if you do not want all the bindings in the included
  1100. file.
  1101. Format:
  1102.        #IGNORE    <keyname>
  1103.  
  1104. For readability, you may give names to extended keys with the
  1105.        #DEFKEY <newname> <keynumber>
  1106. command.  For example, "#defkey Proc1 199" will let you refer to
  1107. "Proc1" and "#199" interchangeably.
  1108.  
  1109. ABORT
  1110.     abort the current macro or operation as if the user had pressed Esc.
  1111.  
  1112. ABORT_UNTIL
  1113.     Abort any currently executing UNTIL command after the command(s) it
  1114.     controls complete.  If multiple UNTIL commands are nested, each is
  1115.     aborted as the commands it controls complete, until all pending
  1116.     UNTILs have been aborted.  Useful mainly in conjunction with the
  1117.     DELAYED command to provide a timeout on UNTIL loops.
  1118.  
  1119.     See also DELAYED, UNTIL.
  1120.  
  1121. ALARM
  1122.     Execute the macro bound to the "Alarm" pseudo-key.  If Alarm is not
  1123.     bound, this command is equivalent to BEEP.
  1124.  
  1125.     See also BEEP, SOUND.
  1126.  
  1127. ANSWERBACK "string"
  1128.     sets the answerback message to the specified string.  If the string is
  1129.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  1130.     command), otherwise, answerback is enabled.
  1131.  
  1132. AT hh:mm:ss
  1133.     execute the following line (or lines if a MULTI) at the specified
  1134.     time.  If the specified time is less than the current time, the
  1135.     command(s) will be executed the next day.  The seconds may be
  1136.     omitted, in which case they default to 0.
  1137.  
  1138.     Note: the command(s) may actually execute later than requested if
  1139.       RBcomm is busy processing incoming characters at the time the
  1140.       command should execute.  The command will execute as soon as RBcomm
  1141.       empties its receive buffer.
  1142.  
  1143.     See also DELAYED, EVERY.
  1144.  
  1145. AUTO_XFER
  1146.     reenable autodownloads/autouploads if they have been canceled by
  1147.     an ENDWHEN ALL_XFER.  If the AutoDL pseudokey has a binding, it
  1148.     is executed; otherwise, a default routine equivalent to
  1149.         WHEN 0 "**^XB00"
  1150.            RECEIVE 'Z'
  1151.     is executed.  The command ENDWHEN ALL is implemented as an
  1152.     ENDWHEN ALL_XFER followed by AUTO_XFER.
  1153.  
  1154.     Further, the dialer does an ENDWHEN ALL_XFER followed by an
  1155.     AUTO_XFER, so the AutoDL pseudokey will allow autodownloads to
  1156.     be preserved across a dial attempt which does not cause a new
  1157.     macro file to be loaded.
  1158.  
  1159.     The autodownloads are also reenabled with AUTO_XFER when hanging
  1160.     up and immediately after loading a new macro file.
  1161.  
  1162.     Note: Puma autodownload may be enabled with the following lines
  1163.     as part of the AutoDL pseudokey:
  1164.         WHEN 0 "^X^H^XPuma^X^H^X"
  1165.            RECEIVE 'P'
  1166.     Although I have not yet seen MPt (the renamed Puma), I understand
  1167.     that its autodownload string has changed, requiring
  1168.         WHEN 0 "^V^H^VMPt ^V^H^V"
  1169.            RECEIVE 'P'
  1170.  
  1171.     WARNING: do not invoke while autodownload is enabled, as you will wind
  1172.        up invoking a download multiple times for one download request....
  1173.  
  1174.     See also ENDWHEN, WHEN.
  1175.  
  1176. AVATAR ON|OFF
  1177.     Specify whether AVATAR command sequences should be honored by
  1178.     the terminal emulator.
  1179.  
  1180.     See also RBCOMM_CMDS.
  1181.  
  1182. AWAITKEY
  1183.     pause until a key is pressed.  The next function which reads a key
  1184.     will read the key which was pressed.  Returns immediately if there
  1185.     was any typeahead (including RBcomm's key stack).
  1186.  
  1187.     See also KFLUSH.
  1188.  
  1189. BEEP
  1190.     sound the bell.     Useful mainly in conjunction with the MULTI or
  1191.     DELAYED commands (see below).
  1192.  
  1193.     See also ALARM, SOUND.
  1194.  
  1195. BREAK
  1196.     send a break to the remote system
  1197.  
  1198. CALL keyname
  1199.     execute the macro (if any) bound to the specified key and then continue
  1200.     executing the current macro (if inside a MULTI).
  1201.  
  1202.     See also GOTO_KEY, PUSHKEY.
  1203.  
  1204. CANCEL_DELAYED which
  1205.     cancel the specified delayed action.  Currently supported:
  1206.            ALL    cancel all delayed actions
  1207.            LAST   cancel the last executed DELAYED or EVERY.  If
  1208.                      called a second time without an intervening DELAYED
  1209.               or EVERY, the second call is ignored.
  1210.  
  1211.     See also DELAYED, EVERY.
  1212.  
  1213. CANCEL_NOTIFY
  1214.     remove the notify window immediately instead of at the end of the
  1215.     configured period of time.
  1216.  
  1217. CHDIR "dir"
  1218.     change the DOS default directory to the specified directory.
  1219.  
  1220. CLOSE_LOG
  1221.     close the current log file.  If logging is off, this command has no
  1222.     effect.
  1223.     See also OPEN_LOG, TOGGLE_LOG.
  1224.  
  1225. CUT num dir "search"
  1226.     search the screen backwards from the current cursor position until
  1227.     the search string (case sensitive) is found, then copy "num"
  1228.     characters in the indicated direction (AFTER or BEFORE) to the cut
  1229.     buffer.     The contents of the cut buffer remain unchanged if the search
  1230.     string is not found (in which case the completion status is set to
  1231.     FAILED for testing by IF or UNTIL).  The cut buffer may be sent to
  1232.     the remote system with the PASTE command, inserted into a line
  1233.     being edited by pressing Alt-P, or inserted with the %C variable
  1234.     expansion.
  1235.  
  1236.     Note that trailing blanks are deleted from the cut buffer.  In
  1237.     addition, the CUT command treats the entire screen (even if a WINDOW
  1238.     command was used to restrict output to a portion of the screen) as a
  1239.     single long line, ignoring all line wrapping for both search and cut.
  1240.  
  1241.     Examples:
  1242.        Screen contains "1234test5678cursor here->" and the cursor is as
  1243.        indicated.  Then
  1244.         CUT 3 BEFORE "test"
  1245.        places "234" into the cut buffer, while
  1246.         CUT 6 AFTER "test"
  1247.        places "5678cu" into the cut buffer.     Further,
  1248.         CUT 7 BEFORE ""
  1249.        will place " here->" into the cut buffer.
  1250.  
  1251.     See also PASTE, TRIM.
  1252.  
  1253. DELAYED time
  1254.     execute the macro on the next line (or lines if it is a MULTI) the
  1255.     given amount of time from now.    You may have up to six delayed
  1256.     commands active at any given time.  The maximum delay time is 18
  1257.     hours; the macro compiler will complain if you attempt to use a
  1258.     greater delay.    Times are specified as
  1259.         seconds
  1260.         minutes:seconds
  1261.     or    hours:minutes:seconds
  1262.  
  1263.     Note: the command may actually execute later than requested if RBcomm
  1264.       is busy processing incoming characters at the time the command should
  1265.       execute.  The command will execute as soon as RBcomm empties its
  1266.       receive buffer.
  1267.  
  1268.     See also CANCEL_DELAYED, EVERY, WHEN.
  1269.  
  1270. DIAL number redial
  1271.     dial the specified entry (0-39) from the dialing directory, or pop up
  1272.     the dialing directory if 'number' is PROMPT.  'redial' specifies how
  1273.     to dial:
  1274.         ONCE    make only one attempt
  1275.         ATTACK    try repeatedly until connected
  1276.         RECONNECT    make a single attempt if not connected, or set
  1277.             parameters and password without dialing if already
  1278.             connected
  1279.  
  1280.     If the number is PROMPT, the user may enter multiple numbers.  If
  1281.     'redial' is RECONNECT, all but the first number will be ignored.
  1282.     Otherwise, the entire list will be tried either once or until a
  1283.     successful connect.
  1284.  
  1285.     See also LISTDIAL, MDIAL.
  1286.  
  1287. DISPLAY "msg"
  1288.     Display the variable-expanded version (see EXEC for details) of the
  1289.     given string at the current cursor position, and update the cursor
  1290.     position to be at the end of the string.  This is similar to the
  1291.     MESSAGE command, but it always displays at the current position;
  1292.     MESSAGE also does not change the cursor position.  The characters
  1293.     ^A through ^F and ^H in the string invoke special actions.  ^C clears
  1294.     from the current position to the end of the line while ^H backs up
  1295.     one column if not already at the left edge; the other special
  1296.     characters are detailed under "Writing your own Help FIles".
  1297.  
  1298.     See also MESSAGE.
  1299.  
  1300. DVEXEC ON|OFF "DVP-command"
  1301.     Start a program in a separate DESQview window.  The first
  1302.     parameter specifies whether RBcomm should keep its serial port
  1303.     routines active; if OFF, the other program may safely perform
  1304.     serial I/O and RBcomm will wait until it terminates (if ON,
  1305.     RBcomm will continue immediately, but the new program may not
  1306.     take over the serial port interrupt without disrupting RBcomm).
  1307.     The second parameter specifies the full name of the .DVP file
  1308.     to be launched and optionally commandline parameters to
  1309.     override those stored in the .DVP.
  1310.     Example:
  1311.         DVEXEC OFF "C:/DV/OZ-PIF.DVP /X"
  1312.             might call the OZSMALL program to perform a CompuServe
  1313.         B+ file transfer, forcing its commandline to "/X"
  1314.         (meaning exit on completion).
  1315.  
  1316. ECHO ON|OFF
  1317.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  1318.     full-duplex (local echo off).
  1319.     (see Alt-E)
  1320.  
  1321.     See also STRIP_PARITY, TOGGLE_ECHO.
  1322.  
  1323. ENDWHEN which
  1324.     cancel the specified WHEN command.  Currently supported:
  1325.        ALL           cancel all WHENs except the autodownloads
  1326.        ALL_XFER    cancel all WHENs including the autodownloads
  1327.        LAST           cancel the last executed WHEN.  A second call without
  1328.              an intervening WHEN acts the same as ENDWHEN ALL.
  1329.  
  1330.     Note: ENDWHEN ALL is implemented as an ENDWHEN ALL_XFER followed
  1331.     by an AUTO_XFER.
  1332.  
  1333.     See also AUTO_XFER, WHEN.
  1334.  
  1335. EVERY delay-time repeat-interval
  1336.     execute the macro on the next line (or lines if it is a MULTI) the
  1337.     given amount of time from now, and then again every
  1338.     'repeat-interval' seconds.  You may have up to six delayed
  1339.     commands active at any given time.  The maximum delay time is 18
  1340.     hours; the macro compiler will complain if you attempt to use a
  1341.     greater delay.    The maximum repeat interval is about 3595
  1342.     seconds.  The delay time is specified as
  1343.         seconds
  1344.         minutes:seconds
  1345.     or    hours:minutes:seconds
  1346.  
  1347.     Note: the command may actually execute later than requested if RBcomm
  1348.       is busy processing incoming characters at the time the command should
  1349.       execute.  The command will execute as soon as RBcomm empties its
  1350.       receive buffer.
  1351.  
  1352.     See also CANCEL_DELAYED, DELAYED, WHEN.
  1353.  
  1354. EXEC "command-to-execute"
  1355.     everything up to the first blank in the string specifies the program to
  1356.     execute (the PATH will be searched if no explicit path is given, and
  1357.     both .COM and .EXE will be looked for if there is no explicit
  1358.     extension), the remainder of the string is the command tail to pass to
  1359.     the program.  Note that a following IF command will always consider
  1360.     the EXEC to have succeeded if you use COMMAND.COM to run the program
  1361.     with the construct
  1362.         "%VCOMSPEC% /c cmd"
  1363.     due to a misfeature of COMMAND.COM.
  1364.  
  1365.     If SAVE_SCREEN is ON, RBcomm will prompt for a key, then restore
  1366.     the screen to the state it was in before the EXEC.  No message will
  1367.     be displayed if the program returns an error; however, an error
  1368.     message will still be displayed if there was an error while attempting
  1369.     to load the program.
  1370.  
  1371.     Within the command, a percent sign introduces a variable substitution.
  1372.     The following sequences are supported:
  1373.         %a     hexadecimal I/O base address being used
  1374.         %C     contents of the cut buffer (see CUT and PASTE)
  1375.         %d     current date, in format mm-dd-yy
  1376.         %D     current directory, including drive
  1377.         %F     file(s) to transfer; this substitution is only meaningful
  1378.              for a file transfer parameter string, and has an undefined
  1379.          action elsewhere
  1380.         %i     IRQ number being used (0-15)
  1381.         %I     get input from user.  The following characters up to the next
  1382.          percent sign are used as the prompt and then discarded.
  1383.         %M     current macro file name
  1384.         %N     name of current remote system (from dialing directory)
  1385.         %p     port number (1-4)
  1386.         %P     port parameters, in same format as dialing directory
  1387.          display
  1388.         %s     current serial port speed
  1389.         %t     current time, in format hh:mm:ss
  1390.         %V     get an environment variable.  The following characters up to
  1391.          the next percent sign are used as the name of the variable
  1392.          and then discarded.
  1393.         %w     current switch character
  1394.         %%     a percent sign
  1395.         %/     a forward slash unless the last character of the expansion
  1396.          for the string up to this point is a slash or backslash
  1397.         %\     a backslash unless the last character of the expansion
  1398.          for the string up to this point is a slash or backslash
  1399.  
  1400.     See also EXECN, IF, SHELL.
  1401.  
  1402. EXECN  "command-to-execute"
  1403.     This command is identical to EXEC, except that no error box is
  1404.     displayed in the event of an error.  If SAVE_SCREEN is ON, the
  1405.     screen is restored without pausing for a keystroke.
  1406.  
  1407.     See also EXEC.
  1408.  
  1409. EXIT errorlevel
  1410.     End RBcomm.  Will prompt you whether or not to hang up if you are
  1411.     still connected to another system.  Returns the specified errorlevel
  1412.     to DOS; usually this should be zero, but other values may be used
  1413.     to control batch file execution.
  1414.  
  1415. EXPAND_BLANK ON|OFF
  1416.     Specify whether RBcomm should send a single blank instead of a
  1417.     completely blank line when TYPEing a file (see Alt-T and TYPE).
  1418.     If ON, a blank will be sent to separate two consecutive
  1419.     carriage returns (TYPE converts both CRLF and LF to CR to
  1420.     simulate keyboard input); if OFF, no extra blanks will be
  1421.     generated regardless of the data in the file.
  1422.  
  1423.     See also TYPE.
  1424.  
  1425. FDELETE "filespec"
  1426.     delete the file(s) named by filespec (which may include wildcards).
  1427.     Note that there is no confirmation requested, so use this command
  1428.     with care!!!
  1429.  
  1430.     See also FILES.
  1431.  
  1432. FILES "filespec"
  1433.     display a three-up list of the files matching the filespec.  This
  1434.     uses the file pager described above.
  1435.  
  1436.     See also FDELETE.
  1437.  
  1438. FORCE_CLEANUP keyname
  1439.     execute the following line(s), then execute the macro bound to
  1440.     "keyname" regardless of how the commands are exited (i.e. normally,
  1441.     ABORT, or <Esc>).  FORCE_CLEANUPs may be nested, in which case
  1442.     the innermost one is the only one to execute unless the cleanup
  1443.     code executes an ABORT itself (then execution gets passed to the one
  1444.     enclosing it, etc.).  If no cleanup is needed and the FORCE_CLEANUP
  1445.     is merely being used to prevent a complete abort on Esc, the pseudo-
  1446.     key Null may be used.  Null is guaranteed to perform no action and
  1447.     return immediately.
  1448.  
  1449. GOTO_KEY keyname
  1450.     continue execution with the specified macro (if bound).     Never returns
  1451.     to the current macro.  If the key is not bound (i.e. GOTO_KEY Null),
  1452.     execution resumes at the point from which the current macro was
  1453.     CALLed, effectively producing a return from a nested macro.
  1454.  
  1455.     See also CALL, PUSHKEY.
  1456.  
  1457. HANGUP
  1458.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  1459.     up if carrier detect is active.     After hanging up, the default macro
  1460.     file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
  1461.  
  1462.     See also HANGUP_ONLY.
  1463.  
  1464. HANGUP_ONLY
  1465.     hang up, but do not execute the "CleanUp" macro or reload macro files.
  1466.  
  1467.     See also HANGUP.
  1468.  
  1469. HELP
  1470.     pop up the help screen.     If you currently have the macro file FOO
  1471.     loaded, RBcomm first attempts to read the file FOO.HLP in the RBcomm
  1472.     directory.  If it is unable to do so, it then attempts to read
  1473.     RBCOMM.HLP.
  1474.  
  1475.     While viewing the help screen(s), you may enter an Alt-key command.
  1476.     This will immediately exit the help system and execute the command
  1477.     right away.  If you press Alt=, that fact will be remembered, and
  1478.     the Alt= will be used to quote the next Alt-key command you press
  1479.     while in the help system.
  1480.  
  1481. IDLE
  1482.     go into idle mode, sending a blank followed by a backspace every 2
  1483.     minutes.  Press Esc to end idle mode.
  1484.  
  1485.     Both the interval and the sequence sent by idle mode may be configured
  1486.     with RBCONFIG.
  1487.  
  1488. IF    SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
  1489.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  1490.     completion status of an immediately preceding EXEC, SHELL, SEND,
  1491.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  1492.     lines if a MULTI) is executed only if that prior command was
  1493.     successful in the case of IF SUCCESS, or if it failed in the case of
  1494.     IF FAILED.
  1495.  
  1496.     IF CONNECTED executes the following command if carrier detect is
  1497.     asserted, while IF OFFLINE executes the following command if
  1498.     carrier detect is deasserted.
  1499.  
  1500.     IF DV executes the following command if RBcomm has detected that it
  1501.     is running under DESQview, while IF NOT DV executes the following
  1502.     command only if RBcomm is not running under DESQview.
  1503.  
  1504.     For example, if you want to execute a program only after failing to
  1505.     see a particular string, you would use
  1506.  
  1507.         MULTI
  1508.         WAITFOR 10 "don't run program"
  1509.         IF FAILED
  1510.             EXEC "someprog args"
  1511.         END
  1512.  
  1513.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  1514.  
  1515. KFLUSH
  1516.     empty the keyboard buffer (including RBcomm's key stack).
  1517.  
  1518.     See also AWAITKEY, TFLUSH.
  1519.  
  1520. LEARN
  1521.     start learning a macro string.    The recorded string may be sent to
  1522.     the remote system with RECALL.
  1523.  
  1524.     See also LOAD_MACRO, RECALL.
  1525.  
  1526. LISTDIAL "numbers"
  1527.     dial the specified numbers from the dialing directory repeatedly until
  1528.     a connection is established with one of the numbers.  If the empty
  1529.     string is specified, the dialing directory is popped up and the
  1530.     previous list of numbers (less the system to which RBcomm
  1531.     established a connection) is recalled.
  1532.  
  1533.     Each of the numbers in the list must be separated from the previous
  1534.     number by one or more spaces or commas.     For example,  "1,5 7,2 4"
  1535.     would attempt to dial entry 1, then entry 5, then 7, then 2, and
  1536.     finally entry 4 before repeating.  Any numbers in the list which are
  1537.     higher than the highest-numbered entry in the current dialing
  1538.     directory are silently skipped.
  1539.  
  1540.     See also DIAL, MDIAL.
  1541.  
  1542. LOAD_MACRO "file"
  1543.     load the specified macro file from the RBcomm directory.  If an empty
  1544.     filename is given, the user will be prompted for a name, which
  1545.     defaults to the name of the currently loaded macro file.  The current
  1546.     macro (if any) and any that it had interrupted are aborted.  However,
  1547.     if the interruption occurred during a command of extended duration
  1548.     such as a WAITFOR, that command will complete normally before the
  1549.     macro is aborted.
  1550.  
  1551.     See also LEARN, RECALL.
  1552.  
  1553. LOG "filename" "message"
  1554.     append the specified message to the named file.     Both the filename
  1555.     and the message may contain variable expansions as described under
  1556.     EXEC.  If the filename is (or expands to) the empty string "", the
  1557.     expanded message is appended to the current log file (if any).
  1558.  
  1559.     See also OPEN_LOG.
  1560.  
  1561. LOWER_DTR
  1562.     requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
  1563.     command.  The best place to put this command is in your CleanUp macro.
  1564.  
  1565. LTRIM CUTBUFFER "trimchars"
  1566.     remove from the left (beginning) of the cut buffer (see CUT) the
  1567.     longest sequence of characters consisting entirely of characters in
  1568.     "trimchars".  A future version of RBcomm supporting string variables
  1569.     will permit trimming more than just the cut buffer.
  1570.  
  1571.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1572.       cut buffer, the command
  1573.           LTRIM CUTBUFFER " 1234"
  1574.       will result in "A22B  34" becoming the contents of the cut buffer,
  1575.       available for the next PASTE command or @P in the input editor.
  1576.  
  1577.     See also CUT, RTRIM, TRIM.
  1578.  
  1579. MDIAL "number" ONCE|ATTACK
  1580.     dial the specified phone number as if it had been entered as the
  1581.     manual number for the dialing directory display.
  1582.  
  1583.     See also DIAL, LISTDIAL.
  1584.  
  1585. MESSAGE row col msg
  1586.     Display the result of expanding any variables in the specified message
  1587.     (see EXEC for details) starting at the given row and column on the
  1588.     screen.     If either row or column is 255, use the current row or
  1589.     column.     Does not change the current cursor position, unlike the
  1590.     DISPLAY command.  As with DISPLAY, the characters ^A through ^F and ^H
  1591.     specify special actions.
  1592.  
  1593.     See also DISPLAY.
  1594.  
  1595. MESSAGEBOX msg
  1596.     if running under TopView or DESQview, a window with the given message
  1597.     will pop up for three seconds.    This command is ignored otherwise.
  1598.  
  1599.     The message has any variables expanded, and the first 40 characters
  1600.     are displayed in the pop up window.  See EXEC for the details of
  1601.     the variable expansion.
  1602.  
  1603.     See also NOTIFY, CANCEL_NOTIFY.
  1604.  
  1605. MULTI
  1606.     the following lines, up to but not including a line starting with END,
  1607.     are assigned to the specified key.  The macros assigned to the key
  1608.     may not total more than 253 bytes, and the macro compiler will
  1609.     complain if they do.
  1610.  
  1611.     The format of the following lines is the same as for a regular macro,
  1612.     except that you do not specify a keyname.  For example, to make
  1613.     shift-F2 switch terminal emulation to VT52, use
  1614.  
  1615.     +F2    MULTI
  1616.         PUSHKEY 13 0
  1617.         PUSHKEY 'V' 0
  1618.         PARAM_MENU
  1619.         END
  1620.  
  1621.     You may also use { and } on separate lines as synonyms for MULTI
  1622.     and END.  The braces are preferred, as MULTI/END will be phased out
  1623.     in future versions.
  1624.  
  1625. MUSIC ON|OFF
  1626.     specify whether ANSI music should be enabled while using the
  1627.     ANSI BBS terminal emulation.  This switch is necessary because
  1628.     the command to play music conflicts with a standard ANSI
  1629.     control sequence (Esc [ M).
  1630.  
  1631.     See also PLAY, SOUND.
  1632.  
  1633. NOTIFY    msg
  1634.     if running under TopView or DESQview, and RBcomm determines that it is
  1635.     in the background, a window with the given message will pop up for
  1636.     three seconds.    This command is ignored otherwise.
  1637.  
  1638.     The message has any variables expanded, and the first 40 characters
  1639.     are displayed in the pop up window.  See EXEC for the details of
  1640.     the variable expansion.
  1641.  
  1642.     See also CANCEL_NOTIFY, MESSAGEBOX.
  1643.  
  1644. OPEN_LOG  "file"
  1645.     if logging is on, the current log file will be closed.    Then, the
  1646.     specified log file will be opened (if no name is given, a prompt is
  1647.     popped up).  The same variable expansions which are valid for
  1648.     the EXEC command are applied to the filename which is given (or
  1649.     entered by the user).
  1650.  
  1651.     For example, to allow the environment variable RBLOG to specify the
  1652.     base name of the log file, use
  1653.         OPEN_LOG "%VRBLOG%.LOG"
  1654.  
  1655.     See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  1656.  
  1657. PACECHAR 'c'
  1658.     set the pace character for the TYPE command to 'c'.  RBcomm waits
  1659.     up to three seconds for the pace character when TYPEing a file to
  1660.     the remote system.  RBcomm will not wait if the pace character is
  1661.     ASCII 0 (^@).
  1662.  
  1663.     See also TYPE.
  1664.  
  1665. PARAM_MENU
  1666.     pop up the "Set Parameters" menu
  1667.  
  1668. PASSWORD
  1669.     send the password defined in the dialing directory.  Does not send
  1670.     a carriage return or any other terminating sequence.
  1671.  
  1672.     See also TEXT, TYPE.
  1673.  
  1674. PASTE
  1675.     send the contents of the cut buffer to the remote system.
  1676.  
  1677.     See also CUT.
  1678.  
  1679. PAUSE num-ticks
  1680.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  1681.     with the MULTI command (see above).
  1682.  
  1683. PLAY "play-string"
  1684.     play the notes specified by the string.     The string may contain
  1685.     the following directives:
  1686.         An
  1687.         Bn
  1688.         Cn
  1689.         Dn
  1690.         En
  1691.         Fn
  1692.         Gn    play the given note, 'n' specifies duration as
  1693.             a fraction of a whole note, defaults to that
  1694.             given by the last L command.  A '#' or '+'
  1695.             between the letter and 'n' produces a sharp
  1696.             note, while a '-' produces a flat note.
  1697.         Ln    specify the default length of notes as 1/n of a
  1698.             whole note
  1699.         Mx    specify music type, x=L, N, or S
  1700.             L)egato: note uses entire period
  1701.             N)ormal: note uses 7/8 of its time period
  1702.             S)taccato: note uses 3/4 of its time period
  1703.         Nn    play note number 'n', from 1 to 95
  1704.         On    specify octave number, 0 to 9.    O3 starts at
  1705.             middle C
  1706.         Pn    rest for the specified period (1/n of a whole
  1707.             note).    If 'n' is not present, use the length
  1708.             given by the last L command
  1709.         Tn    specify tempo, 32 to 255
  1710.         .    following A-G, N, or P, increases the note's
  1711.             length by 1/2.
  1712.  
  1713.     See also BEEP, SOUND.
  1714.  
  1715. PUSHKEY key scan
  1716. or
  1717. PUSHKEY keyname
  1718.     put the specified key/scancode pair onto RBcomm's internal keyboard
  1719.     stack, where the last pushed pair will be the next keystroke read
  1720.     by RBcomm.  The stack is currently eight keystrokes in size, and any
  1721.     PUSHKEY executed while the stack is full will simply be ignored.
  1722.     "keyname" may be the name of any keystroke recognized by the macro
  1723.     compiler.  <scan> is 0 for regular ASCII characters, and 1 for
  1724.     extended ASCII codes (i.e. function keys).
  1725.  
  1726.     Useful mainly in conjunction with the MULTI command (see above).
  1727.  
  1728. RBCOMM_CMDS ON|OFF
  1729.     Specify whether the terminal emulator should honor RBcomm
  1730.     private commands.
  1731.  
  1732.     See also AVATAR.
  1733.  
  1734. RECALL
  1735.     send the last string recorded with LEARN to the remote system.
  1736.  
  1737.     See also LEARN.
  1738.  
  1739. RECEIVE 'type'
  1740.     start receiving a file with the specified protocol
  1741.           0       prompt for protocol
  1742.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  1743.           'X'  Xmodem with parameters
  1744.           'K'  Xmodem-K with parameters
  1745.           'Y'  Ymodem
  1746.           '^Y' Ymodem with parameters
  1747.           'G'  Ymodem-G
  1748.           '^G' Ymodem-G with parameters
  1749.           'Z'  Zmodem
  1750.           '^Z' Zmodem with parameters
  1751.  
  1752.     See also IF, OPEN_LOG, SEND, TYPE.
  1753.  
  1754. RECEIVEFILE 'type' "parameters"
  1755.     start receiving using the specified protocol (which may be any of the
  1756.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  1757.     parameters to the file transfer module.     Unlike RECEIVE, this command
  1758.     will not pop up any messages unless it is unable to load the file
  1759.     transfer module; in case of an error, the completion status is set
  1760.     to FAILED.
  1761.  
  1762.     See also RECEIVE, SENDFILE.
  1763.  
  1764. REPEAT times
  1765.     repeat the command on the next line (or lines if a MULTI) the specified
  1766.     number of times.
  1767.  
  1768. RFLUSH
  1769.     clear any characters which may still be in the serial port receive
  1770.     buffer.
  1771.  
  1772.     See also KFLUSH, TFLUSH.
  1773.  
  1774. RTRIM CUTBUFFER "trimchars"
  1775.     remove from the right (end) of the cut buffer (see CUT) the longest
  1776.     sequence of characters consisting entirely of characters in
  1777.     "trimchars".  A future version of RBcomm supporting string variables
  1778.     will permit trimming more than just the cut buffer.
  1779.  
  1780.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1781.       cut buffer, the command
  1782.           RTRIM CUTBUFFER " 1234"
  1783.       will result in "12  A22B" becoming the contents of the cut buffer,
  1784.       available for the next PASTE command or @P in the input editor.
  1785.  
  1786.     See also CUT, LTRIM, TRIM.
  1787.  
  1788. SAVE_MACRO "file"
  1789.     no longer supported.
  1790.  
  1791. SAVE_SCREEN ON|OFF
  1792.     determine whether or not to save the current screen while executing
  1793.     external programs (other than file transfer).  The state of this
  1794.     flag slightly modifies the behavior of EXEC, EXECN, and SHELL.
  1795.  
  1796.     See also EXEC, EXECN, SHELL.
  1797.  
  1798. SCROLLBACK
  1799.     bring up the scrollback pager.    In addition to the standard keystrokes
  1800.     understood by the pager, 'M' marks the top of the currently displayed
  1801.     screenfull as the beginning of the region to write when 'W' is pressed.
  1802.     After pressing 'W', you will be prompted for a filename.  The section
  1803.     of the scrollback buffer between the marked top (default: beginning of
  1804.     buffer) and the bottom of the currently displayed screen is appended
  1805.     to the specified file.
  1806.  
  1807. SELECT_SCREEN num
  1808.     select a new screen to be the visible and active screen.  If "num" is
  1809.     PROMPT, displays a menu of the available screens.
  1810.  
  1811. SEND 'type'
  1812.     prepare to send a file with the specified protocol
  1813.           0       prompt for protocol
  1814.           'A'  ASCII
  1815.           'X'  Xmodem
  1816.           'K'  Xmodem-K
  1817.           'Y'  Ymodem
  1818.           'G'  Ymodem-G
  1819.           'Z'  Zmodem
  1820.     control character versions of any of the above ('^X', '^Y', etc) will
  1821.     delete the file(s) corresponding to the first filespec after sending.
  1822.  
  1823.     See also IF, SENDFILE, RECEIVE, TYPE.
  1824.  
  1825. SENDFILE 'type' "file"
  1826.     send the specified file with the given protocol, which may be any of
  1827.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1828.     will not pop up any messages unless it is unable to load the file
  1829.     transfer module; in case of an error, the completion status is set
  1830.     to FAILED.
  1831.  
  1832.     See also RECEIVEFILE, SEND.
  1833.  
  1834. SHELL
  1835.     shell to DOS.  If SAVE_SCREEN is ON, the original screen will be
  1836.     restored when you exit from the subshell.
  1837.  
  1838.     See also EXEC, IF.
  1839.  
  1840. SOUND freq dur
  1841.     Generate a tone with a frequency of <freq> Hertz for <dur> clock
  1842.     ticks (max 255).  If the frequency is 0, a musical pause of the
  1843.     specified duration is created.    If both frequency and duration are
  1844.     zero, all queued tones are discarded (applies only to DESQview at
  1845.     this time).
  1846.  
  1847.     See also BEEP, PLAY.
  1848.  
  1849. STRIP_PARITY ON|OFF
  1850.     Specify whether RBcomm should pass through the parity bit (OFF)
  1851.     or remove it before further processing (ON).  This command is
  1852.     similar to the 'P' command on the Alt-P parameters menu.
  1853.  
  1854.     See also ECHO.
  1855.  
  1856. TEST EXISTS "filespec"
  1857.     determine whether any files matching the filespec exist.  Sets the
  1858.     status to SUCCESS if at least one exists, FAILED if none.  The status
  1859.     may be checked with IF or UNTIL commands.
  1860.  
  1861.     See also TEST WHEN, IF.
  1862.  
  1863. TEST WHEN "str"
  1864.     determine whether a WHEN with the specified search string is currently
  1865.     active.     Sets the status to SUCCESS if at least one exists, FAILED if
  1866.     there are no WHENs with the specified string.  The status may be
  1867.     checked with IF or UNTIL commands.
  1868.  
  1869.     See also IF, WHEN, TEST EXISTS.
  1870.  
  1871. TEXT "msg"
  1872.     send the specified characters out the comm port.  "msg" is limited to
  1873.     253 characters.
  1874.  
  1875. TFLUSH
  1876.     discard any characters queued for transmission to the remote system 
  1877.     which have not yet been sent.
  1878.  
  1879.     See also KFLUSH, RFLUSH.
  1880.     
  1881. TOGGLE_ECHO
  1882.     toggle the state of local echoing
  1883.  
  1884.     See also ECHO.
  1885.  
  1886. TOGGLE_LOG
  1887.     if logging is currently on, turns off logging received data to file
  1888.     if logging is off, pops up a prompt for the name of the capture file
  1889.  
  1890.     See also OPEN_LOG, CLOSE_LOG.
  1891.  
  1892. TOGGLE_VERBOSE
  1893.     toggle the state of verbose mode (see Alt-Y)
  1894.  
  1895.     See also VERBOSE.
  1896.  
  1897. TRANSLATE_BS ON|OFF
  1898.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1899.     turns it off.
  1900.  
  1901. TRIM CUTBUFFER "trimchars"
  1902.     remove from both beginning and end of the cut buffer (see CUT) the
  1903.     longest sequence of characters consisting entirely of characters in
  1904.     "trimchars".  A future version of RBcomm supporting string variables
  1905.     will permit trimming more than just the cut buffer.
  1906.  
  1907.     Example: if a previous CUT command has placed "12  A22B  34" into the
  1908.       cut buffer, the command
  1909.           TRIM CUTBUFFER " 1234"
  1910.       will result in "A22B" becoming the contents of the cut buffer,
  1911.       available for the next PASTE command or @P in the input editor.
  1912.  
  1913.     See also CUT, LTRIM, RTRIM.
  1914.  
  1915. TYPE "file"
  1916.     send the specified file to the remote system as a stream of ASCII
  1917.     characters.  Pauses at the end of each line and waits for the pace
  1918.     character to be echoed (will continue after three seconds even if
  1919.     the echo is not seen).    Equivalent to
  1920.         SEND 'A'
  1921.     if no filename is given.
  1922.  
  1923.     See also EXPAND_BLANK, PACECHAR, SEND.
  1924.  
  1925. UI_MENU
  1926.     No longer supported.  Use LOAD_MACRO "" instead.
  1927.  
  1928.     See also LEARN, LOAD_MACRO.
  1929.  
  1930. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1931.     repeatedly executes the following line (or lines if a MULTI) until
  1932.     the status of the last action is either success for UNTIL SUCCESS
  1933.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1934.     the following command until carrier detect becomes active, while
  1935.     UNTIL OFFLINE repeats until carrier detect drops.
  1936.  
  1937.     See also ABORT_UNTIL, IF.
  1938.  
  1939. VERBOSE ON|OFF
  1940.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1941.     (see Alt-Y)
  1942.  
  1943.     See also TOGGLE_VERBOSE.
  1944.  
  1945. VIEW "filename"
  1946.     display the specified file one screenfull at a time.  Pops up a prompt
  1947.     if the null filename is given.
  1948.  
  1949.     Pressing the space bar displays the next screen, Escape exits the
  1950.     file view.
  1951.  
  1952. WAITFOR timeout "wait-string"
  1953.     wait up to timeout seconds for the specified string of characters to
  1954.     arrive over the comm port.  Useful mainly in conjunction with the
  1955.     MULTI command (see below).
  1956.  
  1957.     You may test whether the string was actually received by following
  1958.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1959.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1960.  
  1961.     See also IF.
  1962.  
  1963. WHEN    iterations "when-string"
  1964.     execute the command on the following line (or lines if it is a MULTI)
  1965.     whenever the "when-string" is encountered in the data stream coming
  1966.     from the remote system.     After the string has been encountered
  1967.     "iterations" times, the WHEN is automatically canceled (if iterations
  1968.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1969.     You may have up to six WHENs active at any time (eight if you cancel
  1970.     the autodownload [see ENDWHEN above]).    All WHENs are canceled on
  1971.     hanging up or dialing a number, and autodownload is re-enabled.
  1972.  
  1973.     WHENs are tested in the order in which they were executed, so multiple
  1974.     WHENs with the same when-string will trigger in the order in which
  1975.     they were asserted.
  1976.  
  1977.     This can be an extremely powerful command.  For example, you can
  1978.     implement another autodownloading (or uploading!) protocol simply by
  1979.     adding
  1980.         WHEN 0 "start-string"
  1981.            EXEC "xfer-program parms"
  1982.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1983.     autodownloading by adding
  1984.         WHEN 0 "initiate YMODEM receive"
  1985.            RECEIVE 'Y'
  1986.     to the OnLoad macro.
  1987.  
  1988.     The built-in Zmodem autodownload corresponds to
  1989.         WHEN 0 "**^XB00"
  1990.            RECEIVE 'Z'
  1991.     while Zmodem auto-upload can be added with
  1992.         WHEN 0 "**^XB01"
  1993.            SEND 'Z'
  1994.  
  1995.     The standard Puma autodownload is equivalent to the lines
  1996.         WHEN 0 "^X^H^XPuma^X^H^X"
  1997.            RECEIVE 'P'
  1998.     [thanks to Matthew Thomas for publishing his autodownload string!].
  1999.  
  2000.     See also DELAYED, ENDWHEN, WHENI.
  2001.  
  2002. WHENI    iterations "when-string"
  2003.     identical to the WHEN command, but ignores case in both the
  2004.     when-string and the incoming character stream.  Thus, a
  2005.     WHENI 0 "aBc" will match "abc", "ABC", "AbC", etc.
  2006.  
  2007.     See also WHEN, ENDWHEN.
  2008.  
  2009. WINDOW    row col width height
  2010.     limit the terminal emulator to a portion of the full screen.
  2011.  
  2012.     WINDOW 0 0 255 255 will restore use of the full screen regardless of
  2013.     the screen size.
  2014.  
  2015. -----------
  2016. Time Limits
  2017. -----------
  2018.  
  2019. The maximal time intervals which may be specified for various commands are:
  2020.     255 ticks (~14 seconds)        PAUSE, SOUND
  2021.     255 seconds (4.25 minutes)    WAITFOR
  2022.     3600 seconds (1 hour)        EVERY repeat-interval
  2023.     18 hours (64800 seconds)    DELAYED, EVERY
  2024.  
  2025. -----------------------------------------------------------------------------
  2026. Ready-Made Macro Files
  2027. ----------------------
  2028.  
  2029. The RBcomm distribution includes the following macro files:
  2030.  
  2031. AVATAR.MAC    for use with a BBS that supports AVATAR emulation in
  2032.         its full-screen editor.  This file implements the so-
  2033.         called "DOORWAY mode", passing through all keystrokes.
  2034.         To access RBcomm's commands, you must use the Alt=
  2035.         escape key before the RBcomm command key.
  2036.  
  2037. AVATOPUS.MAC    for use with Opus 1.10 or later BBSs, or compatibles
  2038.         such as Maximus.  Implements DOORWAY mode as AVATAR.MAC
  2039.         does, but also adds logon scripts for the OPUS CBCS
  2040.  
  2041. BAREOPUS.MAC
  2042.  
  2043. CPOINT.MAC    logon to Central Point Software's BBS
  2044.  
  2045. DDJ.MAC        logon to M&T Publishing's BBS to access the DDJ listings
  2046.  
  2047. EMACS.MAC    for use with Unix systems.  Turns your Alt key into a
  2048.         Meta key.
  2049.  
  2050. EXAMPLES.MAC    various sample macros illustrating different features.
  2051.  
  2052. LK201.MAC    emulate an LK201 keyboard
  2053.  
  2054. OPUS.MAC
  2055.  
  2056. QDECK.MAC    logon to Quarterdeck's BBS
  2057.  
  2058. RBCOMM.MAC    default macros
  2059.  
  2060. VT100.MAC    emulate a VT100 keyboard
  2061.  
  2062. VT3270.MAC    emulate a VT100/IBM 3270 keyboard
  2063.  
  2064. VT52.MAC    emulate a VT52 keyboard
  2065.  
  2066. WORDSTAR.MAC    send WordStar motion commands using arrow keys
  2067.  
  2068. -----------------------------------------------------------------------------
  2069. Writing your own Help Files
  2070. ---------------------------
  2071.  
  2072. Help files are plain ASCII files with the exception that several control
  2073. characters are used to change character attributes within a line (each
  2074. line starts with the default attributes).
  2075.  
  2076.     ^A  (A)lternate foreground and background colors, thus turning
  2077.         reverse video on or off
  2078.     ^B  toggle the (B)old bit
  2079.     ^D  reset to (D)efault attributes
  2080.     ^E  switch to underlined color as defined by RBCONFIG
  2081.     ^F  toggle (F)lashing (blink bit)
  2082.  
  2083. -----------------------------------------------------------------------------
  2084. Acknowledgements
  2085. ----------------
  2086.  
  2087. Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
  2088. which have been implemented.
  2089.  
  2090. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  2091. included keyboard bindings, and his patience in testing new versions.
  2092.  
  2093. Thanks to Mike Weaver for his comments and suggestions, some of which have
  2094. been implemented.
  2095.  
  2096. Thanks to Dave Doren for banging on the macro language and reporting bugs
  2097. and possible enhancements.
  2098.  
  2099. -----------------------------------------------------------------------------
  2100. Program History
  2101. ---------------
  2102.  
  2103. v2.72  9/3/89    first public release
  2104. v2.81  10/4/89    second public release
  2105. v3.01  1/6/90    third public release
  2106. v3.12  4/28/90    fourth public release
  2107. v3.21  7/29/90    fifth public release
  2108. v3.31  2/3/91    sixth public release
  2109.  
  2110. v3.32  2/17/91  restored command entry from help screen
  2111.         added %/ and %\ expansions
  2112.         dialing dir now uses pager, capacity increased to 40 entries
  2113. v3.33  3/17/91    removed SAVE_MACRO/UI_MENU, saving 380 bytes
  2114.         simplified macro learning to single key, saving 330 bytes
  2115.         macro file format changes
  2116.         current macro file now kept if new file not found or invalid
  2117.         new compiled dialing directory allows up to 250 entries
  2118. v3.34  4/10/91    directory pager can now back up on very large directories
  2119.         scrollback buffer can now be written to a file
  2120.         added ALARM, MUSIC, PLAY, SOUND, TFLUSH commands
  2121. v3.35  3/15/92    rearranged RBcomm private terminal functions
  2122.         fixed scrollback and pager problems
  2123.         added AVATAR, EXPAND_BLANK, and RBCOMM_CMDS commands
  2124.         added optional BIOS writes for serial input
  2125.         now supports 115200 bps
  2126.         no longer randomly drops behind actual end of serial input at
  2127.           extremely high speeds
  2128. v3.36  8/23/92    now hide DESQview mouse pointer while inside RBcomm window
  2129.         speed optimizations
  2130.         reworked RBCONFIG for greater ease of use
  2131.         enhanced DIALDIR and merged it into RBCONFIG
  2132. v3.40  1/3/93    fixed RBCONFIG serial-port-info update & dialdir Move bugs
  2133.         added DVEXEC, TRIM, LTRIM, and RTRIM commands
  2134.         added #DOWNLOAD_x and #UPLOAD_x metacommands, %F expansion
  2135.         the elusive dialing rollover bug has been squashed
  2136.         the number pad with NumLock on can now be distinguished
  2137.           from the typewriter number keys using the NP_n keynames
  2138.         MACRO.COM can no longer decompile, but can compile
  2139.           multiple macro files at one time
  2140.         (seventh public release)
  2141. v3.41  1/10/93  fixed RBCONFIG "out of memory" bug when trying to edit dialdir
  2142.         fixed macro compiler multiple-file bug (wasn't resetting
  2143.           #defkeys between files)
  2144.         WAITFOR and WHEN were broken when parity stripping was enabled
  2145.         SENDFILE had been broken by v3.40.  Fixed.
  2146.         added STRIP_PARITY macro command
  2147.         (eighth public release)
  2148. v3.42 12/11/94    numerous bugfixes (see README)
  2149.         increased number of comm port definitions from four to eight
  2150.         reworked display update code
  2151.         added WHENI command
  2152. v3.43 12/28/94    reworked serial port code to support future enhancements
  2153.         added EVERY command
  2154. v3.44 1/1/95    fixed RBCONFIG out-of-memory error for good
  2155.         made receive buffer's size adjustable
  2156.         moved terminal emulation command sequences into TERM-EMU.DOC
  2157. v3.45 1/22/95    fixed bugs introduced in v3.42-v3.44
  2158.         (ninth public release)
  2159.